package com.ljs.myspringboot.service.impl;


import com.ljs.myspringboot.entity.Student_boot;
import com.ljs.myspringboot.repository.StudentMapper;
import com.ljs.myspringboot.service.StudentService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {
    @Resource
    StudentMapper studentMapper;

    @Override
    public boolean addStudent(Student_boot student_boot) {
        boolean flag = false;
        int count = 0;
        flag = studentMapper.addStudent(student_boot);
        if (flag) {
            System.out.println("z注册成功");

        }

        return flag;
    }

    @CacheEvict(key = "#id")//当服务层调用了该方法，则会在调用方法结束之后，删除掉redis中key为id的记录。
    @Override
    public int deleteStudent(int id) {
        return studentMapper.deleteStudent(id);
    }

    @CachePut(key = "#stu.getId()")//不管redis缓存中是否存在该条记录，都会执行方法中的代码进行修改操作，同时将方法返回的user对象更新到缓存当中。
    @Override
    public int updateStudent(Student_boot stu) {
        return studentMapper.updateStudent(stu);
    }

    @Override
    public List<Student_boot> selAllStudent(int start, int limit) {
        return studentMapper.selAllStudent(start, limit);
    }

    @Cacheable(key = "#name ")
    //当服务层调用了该方法，会先根据传入的id，去找寻redis数据库中是否存在key为id的记录，如果存在，则不会进入该getUserById()方法，会直接从redis中获取key为id存储的值，作为该方法的返回值返回；如果不存在，则会执行该方法，从持久层数据库中查询到结果作为返回，同时会往redis中新增一条记录，key为id，value为方法返回的对象。
    @Override
    public Student_boot selStudent(String name) {

        return studentMapper.selStudent(name);
    }

    @Override
    public Student_boot login(String name, String password) {
        return studentMapper.login(name, password);
    }
}
